package com.jt.controller;

import com.jt.pojo.Item;
import com.jt.service.ItemService;
import com.jt.vo.ItemVO;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

/**
 * @author tang
 * @data 2021/9/6
 * @apiNode
 */
@RestController
@RequestMapping("item")
@CrossOrigin
public class ItemCpntroller {
    @Autowired
    private ItemService itemService;

    /**
     * 业务:商品列表展现
     * url:/item/getItemList
     * 参数:query=  pageNum=1   pageSize=10
     * 请求方式:Get
     * 请求参数:使用pageResult对象接收
     * 返回值:SysResult(pageResult)
     */
    @GetMapping("/getItemList")
    public SysResult getItemList(PageResult pageResult){
        pageResult = itemService.getItemList(pageResult);
        return SysResult.success(pageResult);
    }

    /**
     * 业务:商品状态修改
     * url:/item/updateItemStatus
     * 请求方式:put
     * 参数:{id: item.id, status: item.status}
     * 返回值:SysResult
     */
    @PutMapping("/updateItemStatus")
    @Transactional
    public SysResult updateItemStatus(@RequestBody Item item){
        itemService.updateItemStatus(item);
        return SysResult.success();
    }

    /**
     * 业务:商品数据删除
     * url: /item/deleteItemById
     * 请求方式:delete
     * 参数:{id: item.id}
     * 返回值:SysResult
     */
    @DeleteMapping("deleteItemById")
    @Transactional
    public SysResult deleteItemById(Item item){
        itemService.deleteItemById(item);
        return SysResult.success();
    }

    /**
     * 业务:获取点击改行的数据回显
     * url:/item/getById/${itemList.id}
     * 参数:id
     * 返回值:SysResult(Item)
     */
    @GetMapping("/getById/{id}")
    public SysResult getById(@PathVariable Integer id){
        Item items = itemService.getById(id);
        return SysResult.success(items);
    }

    /**
     * 业务:修改数据
     * url:/item/updateItem
     * 请求方式:put
     * 参数:updateItem对象
     * 返回值:SysResult
     */
    @PutMapping("/updateItems")
    @Transactional
    public SysResult updateItem(@RequestBody Item item){
        itemService.updateItem(item);
        return SysResult.success();
    }

    /**
     * 业务:商品新增业务
     * url：http://localhost:8091/item/saveItem
     * 请求类型:post
     * 参数:ItemVO的json串{item,itemDesc}
     * 参数接收:ItemVO
     * 返回值:SysResult
     */
    @PostMapping("/saveItem")
    public SysResult saveItem(@RequestBody ItemVO itemVO){
        itemService.saveItem(itemVO);
        return SysResult.success();
    }


}
